Google における監視
#監視
『Site Reliability Engineering: How Google Runs Production Systems』 より
Google の規模では、単一マシンの障害についての警告を受けるのは (ノイズが多すぎて) 受け入れられない
Google の 10 年間の進化により、現状では時系列データが第一クラスになっている
時系列データからチャートやアラートを生成
2003 年に Borg が生み出された後、それを補完する監視システムとして Borgmon も生み出された
最近、Riemann、Heka、Bosun、Prometheus といった Borgmon の時系列ベースのアラートに似たオープンソースツールが生み出されてきた
特に Prometheus は Borgmon に似ている (特に規則言語の点)
変数収集とルール評価の原則はいずれのツールも同様であり、この章の説明を活用できる
Borgmon はシステム障害を検出するために、スクリプト実行ではなく共通のデータ公開形式に依存 (ホワイトボックス監視)
大量収集しやすくするため、メトリクス形式を標準化
内部状態を表出させる古い方法 (varz) では、HTTP リクエストで対象から全ての情報を取得できる
Borgmon は他の Borgmon からも情報を収集できるので、階層構造を構築して上位階層では概要を表示
Borgmon は事前に決められた間隔で対象の /varz エンドポイントをフェッチして値をメモリに保存する
対象を見つけるために、Borgmon インスタンスは対象のリストを保持する
対象は動的に変化しうるので、サービスディスカバリを使用すると良い
定期的に時系列データベース (Time-Seriese Database; TSDB) に保存する
各ターゲットの 「合成」 (synthetic) 変数も記録する
名前がホストとポートに解決された場合や対象が収集に応答した場合、などを識別する
これらの合成変数を使用すると、監視対象のタスクが使用できないかどうかを検出するためのルールを簡単に作成できる
varz は SNMP (Simple Network Management Protocol) とはまったく異なる
SNMP は、最小限のトランスポート要件を持ち、他のほとんどのネットワークアプリケーションが失敗しても機能し続けるように設計されている
HTTP を介した対象のスクレイピングはこの設計原則とは異なるが、これが問題になることはめったにない
ホワイトボックス監視ではユーザーが見ているものとは別なので、ブラックボックス監視もする
Borgmon の保守
Borgmon では、対象と対象に対するルールを別で管理する
複数の対象に同じルールを適用できる
ユニットテストや回帰テストも可能